//
//  TestTableview.swift
//  TableViewSwift
//
//  Created by 郭颢源 on 2020/10/15.
//  Copyright © 2020 lisonglin. All rights reserved.
//

import UIKit
import SnapKit
class CYTabCell : UITableViewCell {
//    var _str:String?
//    var str:String?{
//        get{
//            return _str
//        }
//        set{
//            _str = newValue
//        }
//    }
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.contentView.addSubview(self.imgView)
        self.contentView.addSubview(self.label)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
   public func strb(str:String) {
        
        self.label.text = str;
        self.label.snp.makeConstraints { (make) in
            //不要设置 left
            make.top.equalToSuperview().offset(15);
            make.right.equalToSuperview().offset(-40);
            make.bottom.equalToSuperview().offset(-15);
//            make.top.equalTo(self.label.superview?.snp_topMargin).offset(15);
//            make.right.equalTo(self.label.superview.mas_right).offset(-40);
//            make.bottom.equalTo(self.label.superview.mas_bottom).offset(-15);
        }
        self.imgView.snp.makeConstraints { (make) in
            make.left.equalTo(self.label).offset(-15);
            make.top.equalTo(self.label).offset(-10);
            make.bottom.equalTo(self.label).offset(10);
            make.right.equalTo(self.label).offset(15);
//            make.left.equalTo(_label).offset(-15);
//            make.top.equalTo(_label).offset(-10);
//            make.bottom.mas_equalTo(_label).offset(10);
//            make.right.mas_equalTo(_label).offset(15);
        }
    }
    override func layoutSubviews() {
        super.layoutSubviews()
    }
    lazy var label:UILabel = {
        let label = UILabel.init(frame: CGRect.zero)
        label.font = UIFont.systemFont(ofSize: 15);
        label.textColor = UIColor.black;
                //设置最大宽度
        label.preferredMaxLayoutWidth = 300;
        label.numberOfLines = 0;
        return label
    }()
    lazy var imgView:UIImageView = {
        let imgView = UIImageView.init(frame: CGRect.zero)
        imgView.backgroundColor = UIColor.orange;
        imgView.layer.cornerRadius = 5;
        imgView.layer.masksToBounds = true;
        return imgView
    }()
}

class TestTableview : UIViewController  {
    
    
    let dataSource:NSMutableArray = ["今天的天气真好，今天的天气真好，今天的天气真好，今天的天气真好，今天的天气真好", "今天的天气真好，今天的天气真好", "今天的天气真好，今天的天气真好，今天的天气真好", "今天的天气真好"];
    lazy var tableView: UITableView = {
        let tableView = UITableView.init(frame: self.view.frame, style: UITableView.Style.plain)
        tableView.tableFooterView = UIView()
        tableView.delegate = self;
        tableView.dataSource = self;
        
        return tableView
    }()
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view .addSubview(tableView)
        tableView.register(CYTabCell.self, forCellReuseIdentifier: "CYTabCell")
    }
    
}


extension TestTableview:UITableViewDelegate{
    //点击
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
        tableView .deselectRow(at: indexPath, animated: true)
        
        let vc = testViewController()
        
        //        vc.text = "\(self.dataSource[indexPath.row])"
        
        self.navigationController?.pushViewController(vc, animated: true)
        
    }
}
extension TestTableview:UITableViewDataSource{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.dataSource.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //        注册cell示例
                tableView.ts_registerCellClass(CYTabCell.self)
        //        获取循环利用的cell示例
                let cell = tableView.ts_dequeueReusableCell(CYTabCell.self)
        
//        let cellId = "CYTabCell"
//        var cell = tableView.dequeueReusableCell(withIdentifier: cellId)
//
//        if (cell == nil) {
//            cell = CYTabCell.init(style: .default, reuseIdentifier: cellId)
//        }
        cell?.strb(str:"\(self.dataSource[indexPath.row])")
//        cell?.textLabel?.text = "\(self.dataSource[indexPath.row])"X
        
        return cell!
    }
    func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    
    func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        
        if sourceIndexPath != destinationIndexPath {
            //获取移动的值
            let itemValue = self.dataSource[sourceIndexPath.row]
            
            //               //删除移动的值
            //               self.dataSource.removeObject(at: sourceIndexPath.row)
            //
            //               //如果移动的区域大于现有行数 拼在最后面
            //               if destinationIndexPath.row > self.dataSource.count {
            //                   self.dataSource.add(itemValue)
            //               }else{
            //                   self.dataSource.insert(itemValue, at: destinationIndexPath.row)
            //               }
            
            
        }
    }
    
    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        
        if editingStyle == UITableViewCell.EditingStyle.delete {
            
            //删除数据源当前的数据
            self.dataSource .removeObject(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: UITableView.RowAnimation.fade)
        }
    }
}


